function euclideanGCDRecursive( first, second ) {
  /*
    Calculates GCD of two numbers using Euclidean Recursive Algorithm
    :param first: First number
    :param second: Second number
    :return: GCD of the numbers
    */
  if ( second === 0 ) {
    return first
  } else {
    return euclideanGCDRecursive( second, ( first % second ) )
  }
}

function euclideanGCDIterative( first, second ) {
  /*
    Calculates GCD of two numbers using Euclidean Iterative Algorithm
    :param first: First number
    :param second: Second number
    :return: GCD of the numbers
    */
  while ( second !== 0 ) {
    const temp = second
    second = first % second
    first = temp
  }
  return first
}

function main() {
  const first = 20
  const second = 30
  console.log( 'Recursive GCD for %d and %d is %d', first, second, euclideanGCDRecursive( first, second ) )
  console.log( 'Iterative GCD for %d and %d is %d', first, second, euclideanGCDIterative( first, second ) )
}

main()
